#include<stdio.h>
#include<stdlib.h>
#include"Interface.h"
#include"Jeu.h"
#include"Espace.h"
#include"Visiteur.h"


#include "sdlglutils.h"

GLuint carreau;
GLuint caisse;

int main()
{
	jeu labyrinthe;
	vecteur v;
	char action;
	visiteur anciennePosition;
	
	SDL_Event event;	
	
	setXVecteur(&v,0);
	setYVecteur(&v,0);
	setZVecteur(&v,0);

	
	initJeuFichier(&labyrinthe,"essai4.txt");
	
	visiteurInit2(&anciennePosition,labyrinthe.joueur->caseEmplacement,labyrinthe.joueur->casePied,labyrinthe.joueur->caseRegard);
	
	
	
	SDL_Init(SDL_INIT_VIDEO);
	atexit(SDL_Quit);
	SDL_WM_SetCaption("Labyrinthe Hypertorique", "Labyrinthe");
	SDL_SetVideoMode(800, 600, 32, SDL_OPENGL);
	

	glViewport(0,0,800,600);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(90.0f, (float)800/(float)600, 0.0005f, 9);
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_TEXTURE_2D);

	
	carreau = loadTexture("tiles_ctf05r.jpg",1);
	caisse = loadTexture("caisse.jpg",1);
	
    
	glMatrixMode(GL_MODELVIEW);


	
	SDL_EnableKeyRepeat(10, 0);
	for(;;)
	{
    
		affEspace3D(&labyrinthe);
		SDL_WaitEvent(&event);
		getJoueur(&labyrinthe, &anciennePosition);


		switch(event.type)
		{
			case SDL_KEYDOWN :
				switch(event.key.keysym.sym)
				{
					case SDLK_UP :
						action='a';
						Jouer(&labyrinthe,'a');		
						break;
					case SDLK_LEFT:
						action='g';
						Jouer(&labyrinthe,'g');
						break;
					case SDLK_DOWN :
						action='b';
						Jouer(&labyrinthe,'b');
						break;
					case SDLK_RIGHT :
						action='d';
						Jouer(&labyrinthe,'d');
						break;
					case SDLK_ESCAPE:
						freeJeu(&labyrinthe);
						exit(0);
						break;
					default:
						;
				}
				affEspaceContinu(&labyrinthe,&anciennePosition);
				break;
			case SDL_QUIT :
				freeJeu(&labyrinthe);
				exit(0);
				break;
		}	
    		if(testFin(&labyrinthe)==1)
		{
			printf("VOUS AVEZ GAGNE !\n");
			SDL_SetVideoMode(800,600,32,SDL_OPENGL);
			do
			{
				SDL_WaitEvent(&event);
			}while(event.key.keysym.sym!=SDLK_ESCAPE);
			SDL_Quit();
			freeVisiteur(&anciennePosition);
			exit(0);
		}
	}

	
	return 0;
	

	return 0;
}



